#include "URI.h"

URI::URI(void)
{
	state.uri = &uri;
}

URI::~URI(void)
{
	uriFreeUriMembersA(&uri);
}

bool URI::parseURI(const char* uriStr)
{
	if (uriParseUriA(&state, uriStr) != URI_SUCCESS) {
		return false;
	}
	return true;
}

bool URI::parseURI(const string& uriStr)
{
	return parseURI(uriStr.c_str());
}

string URI::getScheme() const
{
	string schemeStr(uri.scheme.first, uri.scheme.afterLast);
	return schemeStr;
}

string URI::getHost() const
{
	string hostStr(uri.hostText.first, uri.hostText.afterLast);
	return hostStr;
}

int URI::getPort() const
{
	string portStr(uri.portText.first, uri.portText.afterLast);
	if (portStr.empty())
		return 0;

	return atoi(portStr);
}